home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Software Contest 3 / FM Towns Software Contest 3.iso / exp / video_t / no1 / c_sorse / box2.c < prev    next >
Text File  |  1994-01-07  |  9KB  |  370 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <egb.h>
  6. #include <te.h>
  7. #include <fntb.h>
  8. #include <gui.h>
  9.  
  10. int    Dialog_box = -1 ;
  11. int    Message_box = -1 ;
  12. int    TIcon_box[4] = -1 ;
  13. int    Message_vox1 = -1 ;
  14. int    _001Message_vox1 = -1 ;
  15. int    _002Message_vox1 = -1 ;
  16. int    _003Message_vox1 = -1 ;
  17. int    TIcon_boxpaint = -1 ;
  18. int    _004Message_vox1 = -1 ;
  19. int    _005Message_vox1 = -1 ;
  20. int    NumBox_boxpen = -1 ;
  21. int    _006Message_vox1 = -1 ;
  22. int    NumBox_boxx1 = -1 ;
  23. int    _007Message_vox1 = -1 ;
  24. int    NumBox_boxy1 = -1 ;
  25. int    _008Message_vox1 = -1 ;
  26. int    NumBox_boxx2 = -1 ;
  27. int    _009Message_vox1 = -1 ;
  28. int    NumBox_boxy2 = -1 ;
  29. int    DButton_box = -1 ;
  30. int    _001DButton_box = -1 ;
  31. int    _002DButton_box = -1 ;
  32. int    _010Message_vox1 = -1 ;
  33. int    _011Message_vox1 = -1 ;
  34. int    _012Message_vox1 = -1 ;
  35. int    _003DButton_box = -1 ;
  36. int    _013Message_vox1 = -1 ;
  37.  
  38. extern     int    backid ;
  39. extern int    Dia_edit ;
  40. extern int    Dialog_menu ;
  41. extern int    Text ;
  42. extern     char    *guiEgbPtr ;
  43. extern     char    para10[300];
  44. extern     char    *pwork;
  45. extern     wait();
  46.  
  47. int        radiobox = 0 ;
  48. /*    initDataBOX:TIcon_box[0]:MJ_TICONL40の呼び出し関数    */
  49. /*    initDataBOX:TIcon_box[1]:MJ_TICONL40の呼び出し関数    */
  50. /*    initDataBOX:TIcon_box[2]:MJ_TICONL40の呼び出し関数    */
  51. /*    initDataBOX:TIcon_box[3]:MJ_TICONL40の呼び出し関数    */
  52. int    box_func(kobj, messId, argc, pev, trigger)
  53. int        kobj ;
  54. int        messId ;
  55. int        argc ;
  56. EVENT    *pev ;
  57. int        trigger ;
  58. {
  59. /*    現在選択状態にあるボタンを非選択状態にし、選択可にします    */
  60. MTL_resetFlagObj(radiobox,~(MS_UNSELECT | MS_TOGGLE)) ;
  61. MMI_SendMessage(radiobox, MM_SHOW, 0) ;
  62. /*    画面選択フラグを更新します    */
  63. radiobox = kobj ;
  64.  
  65. /*    呼び出し元トグルボタンを選択状態にし、選択不可にします    */
  66. MTL_setFlagObj(kobj, MS_UNSELECT | MS_TOGGLE) ;
  67. MMI_SendMessage(kobj, MM_SHOW, 0) ;
  68.     return NOERR ;
  69. }
  70.  
  71. /*    initDataBOX:DButton_box:MJ_DBUTTONL40の呼び出し関数    */
  72. int    box_on(kobj, messId, argc, pev, trigger)
  73. int        kobj ;
  74. int        messId ;
  75. int        argc ;
  76. EVENT    *pev ;
  77. int        trigger ;
  78. {
  79. int     delay1,delay2,delay0,delay3,pens ;
  80. int    min, max, delta, ptColum ;
  81. int    ret;
  82. char    moji[300];
  83. char    suu[10];
  84.  
  85. MMI_SendMessage(NumBox_boxpen, MM_GETNUMBOX, 5,
  86.                 &pens, &min, &max, &delta, &ptColum) ;
  87. moji[0]='\0';
  88. strcat(moji,"/PEN ");
  89. _itoa(pens,suu,10);
  90. strcat(moji,suu);
  91. MMI_SendMessage(Text,MM_SETTEXT,3,moji,200,TRUE) ;
  92. MMI_SendMessage(Text,MM_SETTEXT,3,"\n",5,TRUE) ;
  93.  
  94. ret=MTL_checkFlagObj(TIcon_boxpaint,MS_TOGGLE);
  95.  
  96. MMI_SendMessage(NumBox_boxx1, MM_GETNUMBOX, 5,
  97.                 &delay0, &min, &max, &delta, &ptColum) ;
  98. MMI_SendMessage(NumBox_boxy1, MM_GETNUMBOX, 5,
  99.                 &delay1, &min, &max, &delta, &ptColum) ;
  100. MMI_SendMessage(NumBox_boxx2, MM_GETNUMBOX, 5,
  101.                 &delay2, &min, &max, &delta, &ptColum) ;
  102. MMI_SendMessage(NumBox_boxy2, MM_GETNUMBOX, 5,
  103.                 &delay3, &min, &max, &delta, &ptColum) ;
  104. moji[0]='\0';
  105. if(ret==0x10)    strcat(moji,"/BOX 1 ");
  106. else        strcat(moji,"/BOX 0 ");
  107. _itoa(delay0,suu,10);
  108. strcat(moji,suu);
  109. strcat(moji," ");
  110. _itoa(delay1,suu,10);
  111. strcat(moji,suu);
  112. strcat(moji," ");
  113. _itoa(delay2,suu,10);
  114. strcat(moji,suu);
  115. strcat(moji," ");
  116. _itoa(delay3,suu,10);
  117. strcat(moji,suu);
  118. MMI_SendMessage(Text,MM_SETTEXT,3,moji,200,TRUE) ;
  119. MMI_SendMessage(Text,MM_SETTEXT,3,"\n",5,TRUE) ;
  120. moji[0]='\0';
  121. strcat(moji,"/PEN 1");
  122. MMI_SendMessage(Text,MM_SETTEXT,3,moji,200,TRUE) ;
  123. MMI_SendMessage(Text,MM_SETTEXT,3,"\n",5,TRUE) ;
  124.  
  125. MMI_SendMessage(Dialog_box,MM_ERASE,0) ;
  126. MMI_SendMessage(Dialog_box,MM_DETACH,0) ;
  127. MMI_SendMessage(Text, MM_ERASE, 0) ;
  128. MMI_SendMessage(Text, MM_WAKE, 0) ;
  129. MMI_SendMessage(Text, MM_SHOW, 0) ;
  130. /*    メニューを選択可とします。    */
  131. MTL_resetAtrObj(Dialog_menu, ~MS_DSPONLYL40) ;
  132. MTL_resetAtrObj(Dia_edit, ~MS_DSPONLYL40) ;
  133. MTL_resetAtrObj(backid, ~MS_DSPONLYL40) ;
  134.  
  135. return NOERR ;
  136. }
  137.  
  138.  
  139. /*    initDataBOX:_001DButton_box:MJ_DBUTTONL40の呼び出し関数    */
  140. int    box_off(kobj, messId, argc, pev, trigger)
  141. int        kobj ;
  142. int        messId ;
  143. int        argc ;
  144. EVENT    *pev ;
  145. int        trigger ;
  146. {
  147. MMI_SendMessage(Dialog_box,MM_ERASE,0) ;
  148. MMI_SendMessage(Dialog_box,MM_DETACH,0) ;
  149. /*    メニューを選択可とします。    */
  150. MTL_resetAtrObj(Dialog_menu, ~MS_DSPONLYL40) ;
  151. MTL_resetAtrObj(Dia_edit, ~MS_DSPONLYL40) ;
  152. MTL_resetAtrObj(backid, ~MS_DSPONLYL40) ;
  153.  
  154.     return NOERR ;
  155. }
  156.  
  157. /*    initDataBOX:_002DButton_box:MJ_DBUTTONL40の呼び出し関数    */
  158. int    box_kaku(kobj, messId, argc, pev, trigger)
  159. int        kobj ;
  160. int        messId ;
  161. int        argc ;
  162. EVENT    *pev ;
  163. int        trigger ;
  164. {
  165. int    i;
  166. MG_pushEgbWork(guiEgbPtr,&pwork);
  167. for (i = 0 ; i < 3 ; i++)
  168. {
  169. if (TIcon_box[i] == radiobox)        break ;
  170. }
  171.  
  172. /*    メニューを選択不可とします。    */
  173. MTL_setAtrObj(Dialog_box, MS_DSPONLYL40) ;
  174.  
  175. switch    (i)
  176.     {
  177.     case    0:    gamen1();
  178.             EGB_color(guiEgbPtr,0,32000);
  179.             EGB_color(guiEgbPtr,1,0);
  180.             EGB_color(guiEgbPtr,2,1000);
  181.             break;
  182.     case    1:    gamen6();
  183.             EGB_color(guiEgbPtr,0,32000);
  184.             EGB_color(guiEgbPtr,1,0);
  185.             EGB_color(guiEgbPtr,2,1000);
  186.             break;
  187.     case    2:    gamen0();
  188.             EGB_color(guiEgbPtr,0,255);
  189.             EGB_color(guiEgbPtr,1,0);
  190.             EGB_color(guiEgbPtr,2,20);
  191.             break;
  192.     case    3:    gamen2();
  193.             EGB_color(guiEgbPtr,0,15);
  194.             EGB_color(guiEgbPtr,1,0);
  195.             EGB_color(guiEgbPtr,2,12);
  196.             break;
  197.     }
  198.  
  199. int     delay1,delay2,delay0,delay3,pens ;
  200. int    min, max, delta, ptColum ;
  201. int    ret;
  202.  
  203. ret=MTL_checkFlagObj(TIcon_boxpaint,MS_TOGGLE);
  204.  
  205. MMI_SendMessage(NumBox_boxpen, MM_GETNUMBOX, 5,
  206.                 &pens, &min, &max, &delta, &ptColum) ;
  207. MMI_SendMessage(NumBox_boxx1, MM_GETNUMBOX, 5,
  208.                 &delay0, &min, &max, &delta, &ptColum) ;
  209. MMI_SendMessage(NumBox_boxy1, MM_GETNUMBOX, 5,
  210.                 &delay1, &min, &max, &delta, &ptColum) ;
  211. MMI_SendMessage(NumBox_boxx2, MM_GETNUMBOX, 5,
  212.                 &delay2, &min, &max, &delta, &ptColum) ;
  213. MMI_SendMessage(NumBox_boxy2, MM_GETNUMBOX, 5,
  214.                 &delay3, &min, &max, &delta, &ptColum) ;
  215.  
  216. EGB_penSize(guiEgbPtr,pens);    
  217.  
  218. if(ret==0x10)    EGB_paintMode(guiEgbPtr,0x22);
  219. else        EGB_paintMode(guiEgbPtr,0x2);
  220. WORD(para10 + 0)=delay0;
  221. WORD(para10 + 2)=delay1;
  222. WORD(para10 + 4)=delay2;
  223. WORD(para10 + 6)=delay3;
  224. EGB_rectangle(guiEgbPtr,para10);
  225.  
  226. EGB_penSize(guiEgbPtr,1);
  227. int    ss,xx,yy;
  228. do {
  229.     MOS_rdpos(&ss,&xx,&yy);
  230.     }while(ss==0);
  231.  
  232. gamen2();
  233. MG_popEgbWork(guiEgbPtr,pwork);
  234. WINCLIP *pwclp ;
  235. FRAME   fr ;
  236. fr.lupx = 0 ;
  237. fr.lupy = 0 ;
  238. fr.rdwx = 639 ;
  239. fr.rdwy = 479 ;
  240. pwclp = WIN_getClipMemory(&fr, NULL) ;
  241. MMI_SendMessage(MMI_GetBaseObj(), MM_UPDATE, 1, pwclp) ;
  242. WIN_freeClipMemory(pwclp) ;
  243. wait();
  244. /*    メニューを選択可とします。    */
  245. MTL_resetAtrObj(Dialog_box, ~MS_DSPONLYL40) ;
  246.  
  247.     return NOERR ;
  248. }
  249.  
  250. int    l_box()
  251. {
  252. /*    背景を選択不可とします。*/
  253. MTL_setAtrObj(backid, MS_DSPONLYL40) ;
  254. MTL_setAtrObj(Dialog_menu, MS_DSPONLYL40) ;
  255. MTL_setAtrObj(Dia_edit, MS_DSPONLYL40) ;
  256.  
  257. MMI_SendMessage(Dialog_box,MM_ATTACH,1,MMI_GetBaseObj()) ;
  258. MMI_SendMessage(Dialog_box, MM_SHOW, 0) ;
  259. return NOERR ;
  260. }
  261.  
  262. /*    initDataBOX:_003DButton_box:MJ_DBUTTONL40の呼び出し関数    */
  263. int    box_set(kobj, messId, argc, pev, trigger)
  264. int        kobj ;
  265. int        messId ;
  266. int        argc ;
  267. EVENT    *pev ;
  268. int        trigger ;
  269. {
  270. int    i;
  271. MG_pushEgbWork(guiEgbPtr,&pwork);
  272. for (i = 0 ; i < 3 ; i++)
  273. {
  274. if (TIcon_box[i] == radiobox)        break ;
  275. }
  276. switch    (i)
  277.     {
  278.     case    0:    gamen1();
  279.             EGB_color(guiEgbPtr,0,32000);
  280.             EGB_color(guiEgbPtr,1,0);
  281.             EGB_color(guiEgbPtr,2,1000);
  282.             break;
  283.     case    1:    gamen6();
  284.             EGB_color(guiEgbPtr,0,32000);
  285.             EGB_color(guiEgbPtr,1,0);
  286.             EGB_color(guiEgbPtr,2,1000);
  287.             break;
  288.     case    2:    gamen0();
  289.             EGB_color(guiEgbPtr,0,255);
  290.             EGB_color(guiEgbPtr,1,0);
  291.             EGB_color(guiEgbPtr,2,20);
  292.             break;
  293.     case    3:    gamen2();
  294.             EGB_color(guiEgbPtr,0,15);
  295.             EGB_color(guiEgbPtr,1,0);
  296.             EGB_color(guiEgbPtr,2,12);
  297.             break;
  298.     }
  299.  
  300. int     delay1,delay2,delay0,delay3,pens ;
  301. int    min, max, delta, ptColum ;
  302. int    ss,xx,yy;
  303. int    ss1,xx1,yy1;
  304. int    ss2,xx2,yy2;
  305. int    ret;
  306. char    para[100];
  307.  
  308. MG_mosDisp(1);
  309.  
  310. ret=MTL_checkFlagObj(TIcon_boxpaint,MS_TOGGLE);
  311.  
  312. MMI_SendMessage(NumBox_boxpen, MM_GETNUMBOX, 5,
  313.                 &pens, &min, &max, &delta, &ptColum) ;
  314.  
  315. EGB_penSize(guiEgbPtr,pens);    
  316.  
  317. if(ret==0x10)    EGB_paintMode(guiEgbPtr,0x22);
  318. else        EGB_paintMode(guiEgbPtr,0x2);
  319.  
  320. do {
  321.     MOS_rdpos(&ss,&xx,&yy);
  322.     }while(ss==0);
  323. WORD(para + 0)=1;
  324. WORD(para + 2)=xx;
  325. WORD(para + 4)=yy;
  326. MG_mosDisp(0);
  327. EGB_pset(guiEgbPtr,para);
  328. MG_mosDisp(1);
  329. wait();
  330. WORD(para10 + 0)=xx;
  331. WORD(para10 + 2)=yy;
  332. do {
  333.     MOS_rdpos(&ss2,&xx2,&yy2);
  334.     }while(ss2==0);
  335. WORD(para10 + 4)=xx2;
  336. WORD(para10 + 6)=yy2;
  337. MG_mosDisp(0);
  338. EGB_rectangle(guiEgbPtr,para10);
  339. EGB_penSize(guiEgbPtr,1);
  340. MG_mosDisp(1);
  341. wait();
  342. do {
  343.     MOS_rdpos(&ss1,&xx1,&yy1);
  344.     }while(ss1==0);
  345.  
  346. gamen2();
  347. MG_popEgbWork(guiEgbPtr,pwork);
  348. WINCLIP *pwclp ;
  349. FRAME   fr ;
  350. fr.lupx = 0 ;
  351. fr.lupy = 0 ;
  352. fr.rdwx = 639 ;
  353. fr.rdwy = 479 ;
  354. pwclp = WIN_getClipMemory(&fr, NULL) ;
  355. MMI_SendMessage(MMI_GetBaseObj(), MM_UPDATE, 1, pwclp) ;
  356. WIN_freeClipMemory(pwclp) ;
  357.  
  358. MMI_SendMessage(NumBox_boxx1, MM_SETNUMBOX, 5,xx, 0, 640, 1, 0) ;
  359. MMI_SendMessage(NumBox_boxy1, MM_SETNUMBOX, 5,yy, 0, 480, 1, 0) ;
  360. MMI_SendMessage(NumBox_boxx2, MM_SETNUMBOX, 5,xx2, 0, 640, 1, 0) ;
  361. MMI_SendMessage(NumBox_boxy2, MM_SETNUMBOX, 5,yy2, 0, 480, 1, 0) ;
  362. MMI_SendMessage(NumBox_boxx1, MM_SHOW, 0) ;
  363. MMI_SendMessage(NumBox_boxy1, MM_SHOW, 0) ;
  364. MMI_SendMessage(NumBox_boxx2, MM_SHOW, 0) ;
  365. MMI_SendMessage(NumBox_boxy2, MM_SHOW, 0) ;
  366.  
  367. return NOERR ;
  368. }
  369.  
  370.